using System.Collections.Generic;
using UnityEngine;

public static class EngineExtensions
{
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , UnityEngine.Matrix4x4[] matrices)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , UnityEngine.Matrix4x4[] matrices,int count)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, count);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , UnityEngine.Matrix4x4[] matrices,int count, UnityEngine.MaterialPropertyBlock properties)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, count, properties);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , UnityEngine.Matrix4x4[] matrices,int count, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, count, properties, castShadows);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , UnityEngine.Matrix4x4[] matrices,int count, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, count, properties, castShadows, receiveShadows);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , UnityEngine.Matrix4x4[] matrices,int count, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows,int layer)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, count, properties, castShadows, receiveShadows, layer);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , UnityEngine.Matrix4x4[] matrices,int count, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows,int layer, UnityEngine.Camera camera)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, count, properties, castShadows, receiveShadows, layer, camera);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , UnityEngine.Matrix4x4[] matrices,int count, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows,int layer, UnityEngine.Camera camera, UnityEngine.Rendering.LightProbeUsage lightProbeUsage)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, count, properties, castShadows, receiveShadows, layer, camera, lightProbeUsage);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex ,List<Matrix4x4> matrices)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , List<Matrix4x4> matrices, UnityEngine.MaterialPropertyBlock properties)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, properties);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , List<Matrix4x4> matrices, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, properties, castShadows);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , List<Matrix4x4> matrices, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, properties, castShadows, receiveShadows);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , List<Matrix4x4> matrices, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows,int layer)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, properties, castShadows, receiveShadows, layer);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , List<Matrix4x4> matrices, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows,int layer, UnityEngine.Camera camera)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, properties, castShadows, receiveShadows, layer, camera);
    }
    
    
    public static  void DrawMeshInstanced(UnityEngine.Mesh[] meshArray, int meshArrayIndex, int submeshIndex, UnityEngine.Material[] materialArray, int materialArrayIndex , List<Matrix4x4> matrices, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows,int layer, UnityEngine.Camera camera, UnityEngine.Rendering.LightProbeUsage lightProbeUsage)
    {
        Graphics.DrawMeshInstanced( meshArray[meshArrayIndex], submeshIndex, materialArray[materialArrayIndex], matrices, properties, castShadows, receiveShadows, layer, camera, lightProbeUsage);
    }
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer, camera);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer, camera, submeshIndex);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer, camera, submeshIndex, properties);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties,bool castShadows)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties,bool castShadows,bool receiveShadows)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Vector3 position, UnityEngine.Quaternion rotation, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows, UnityEngine.Transform probeAnchor)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], position, rotation, materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows, probeAnchor);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties,bool castShadows)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties,bool castShadows,bool receiveShadows)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows, UnityEngine.Transform probeAnchor)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows, probeAnchor);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows, UnityEngine.Transform probeAnchor,bool useLightProbes)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows, probeAnchor, useLightProbes);
    }
    
    
    public static  void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray, int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer, UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, UnityEngine.Rendering.ShadowCastingMode castShadows,bool receiveShadows, UnityEngine.Transform probeAnchor, UnityEngine.Rendering.LightProbeUsage lightProbeUsage)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows, probeAnchor, lightProbeUsage);
    }

    public static void DrawMesh(UnityEngine.Mesh[] meshArray, int meshArrayIndex, UnityEngine.Matrix4x4[] matrixArray,
        int matrixArrayIndex, UnityEngine.Material[] materialArray, int materialArrayIndex, int layer,
        UnityEngine.Camera camera, int submeshIndex, UnityEngine.MaterialPropertyBlock properties, bool castShadows,
        bool receiveShadows, bool useLightProbes)
    {
        Graphics.DrawMesh(meshArray[meshArrayIndex], matrixArray[matrixArrayIndex], materialArray[materialArrayIndex], layer, camera, submeshIndex, properties, castShadows, receiveShadows, useLightProbes);
    }
}